import axios from 'axios'

/**
 * 获取活跃状态的轮播图列表（用于前端展示）
 * @returns {Promise} 请求Promise
 */
export function getActiveBanners() {
  return axios.get('/api/banners/active')
}

/**
 * 获取所有轮播图列表
 * @returns {Promise} 请求Promise
 */
export function getAllBanners() {
  return axios.get('/api/banners')
}

/**
 * 获取轮播图列表（分页，管理员专用）
 * @param {number} page 页码
 * @param {number} size 每页数量
 * @param {number} status 状态（可选）
 * @returns {Promise} 请求Promise
 */
export function getBannerList(page = 1, size = 10, status = null) {
  return axios.get('/api/banners/page', {
    params: {
      page,
      size,
      status: status !== null ? status : undefined
    }
  })
}

/**
 * 根据ID获取轮播图信息
 * @param {number} id 轮播图ID
 * @returns {Promise} 请求Promise
 */
export function getBannerById(id) {
  return axios.get(`/api/banners/${id}`)
}

/**
 * 添加轮播图（管理员专用）
 * @param {object} data 轮播图信息
 * @returns {Promise} 请求Promise
 */
export function addBanner(data) {
  return axios.post('/api/banners', data)
}

/**
 * 更新轮播图信息（管理员专用）
 * @param {number} id 轮播图ID
 * @param {object} data 轮播图信息
 * @returns {Promise} 请求Promise
 */
export function updateBanner(id, data) {
  return axios.put(`/api/banners/${id}`, data)
}

/**
 * 删除轮播图（管理员专用）
 * @param {number} id 轮播图ID
 * @returns {Promise} 请求Promise
 */
export function deleteBanner(id) {
  return axios.delete(`/api/banners/${id}`)
}

/**
 * 更新轮播图状态（管理员专用）
 * @param {number} id 轮播图ID
 * @param {number} status 状态（0-禁用，1-启用）
 * @returns {Promise} 请求Promise
 */
export function updateBannerStatus(id, status) {
  return axios.put(`/api/banners/${id}/status`, null, {
    params: { status }
  })
}

/**
 * 更新轮播图排序（管理员专用）
 * @param {number} id 轮播图ID
 * @param {number} sort 排序值
 * @returns {Promise} 请求Promise
 */
export function updateBannerSort(id, sort) {
  return axios.put(`/api/banners/${id}/sort`, null, {
    params: { sort }
  })
}

/**
 * 批量删除轮播图（管理员专用）
 * @param {Array} ids 轮播图ID列表
 * @returns {Promise} 请求Promise
 */
export function deleteBannerBatch(ids) {
  return axios.delete('/api/banners/batch', {
    params: { ids }
  })
} 